2 IF PEEK(43447) < >0 THEN PRINT : PRINT "<CTRL-G>PRODOS 1.1.1 REQUIRED": END
3 IF PEEK(176) *256 + PEEK(175) >8192 THEN PRINT : PRINT "<CTRL-G>PROGRAM TOO LARGE": END
4 LOMEM: 20000: REM ROOM FOR BASIC AND ERR
5 S$ = "BASIC.SYSTEM"
6 PRINT CHR$(21): POKE 34,0: HOME :ML = 18432: REM START OF CODE
7 D = 1: REM DEFAULT DRIVE NUMBER
17 Q$ = CHR$(34):D$ = CHR$(4):KP = 49152:KR = 49168:BP$ = CHR$(7):CS = -958:GM = ML +3:UV = ML +6:N8 = ML +9: REM CALLS
18 PRINT CHR$(4)"BLOAD ERROR.CODE": HOME
21 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>______________________<CTRL-M><CTRL-M>READ ORIGINAL MESSAGES<CTRL-M>______________________<CTRL-M>
23 DIM ER$(18),ER(18): FOR I = 0 TO 19: READ J: NEXT : FOR I = 0 TO 18: READ ER$(I): NEXT : NORMAL : PRINT "BEAGLE ERROR EDITOR (C) 1985, R.BRANDT";: INVERSE : PRINT "ORIGINAL MESSAGE : CURRENT VERSION";: NORMAL
70 FOR I = 0 TO 379: PRINT " .";: NEXT : FOR I = 3 TO 21: VTAB I: HTAB 20: PRINT ":": NEXT : VTAB 3: FOR I = 0 TO 18: PRINT ER$(I): NEXT
95 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>_____________________<CTRL-M><CTRL-M>READ CURRENT MESSAGES<CTRL-M>_____________________<CTRL-M>
100 Y = -1: VTAB 3: FOR J = 2 TO 21: IF J = 6 THEN J = J +1
110 POKE 9,J:Y = Y +1: GOSUB 900: NEXT : POKE 9,12
150 PRINT Q$"E"Q$"DIT, "Q$"N"Q$"ORMALIZE, "Q$"U"Q$"PDATE, OR "Q$"Q"Q$"UIT";: NORMAL : POKE 34,23: POKE 49233,0
175 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>______________________<CTRL-M><CTRL-M>WAIT FOR USER'S CHOICE<CTRL-M>______________________<CTRL-M>
180 GOSUB 800
190 IF X = 81 THEN 4000: REM QUIT
195 IF X = 85 THEN 3000: REM 'U'
200 IF X = 78 THEN 2000: REM 'N' NORMALIZE
210 IF X < >69 THEN PRINT BP$;: GOTO 180
215 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>_______________________<CTRL-M><CTRL-M>SELECT AND EDIT MESSAGE<CTRL-M>_______________________<CTRL-M>
225 CALL ML: POKE 34,23: HOME : POKE 34,0: IF PEEK(8) = 0 THEN CALL UV: INVERSE : VTAB 23: GOTO 150
240 Y = PEEK(9) -2: IF Y >4 THEN Y = Y -1
250 VTAB 11: PRINT : INVERSE : GOSUB 900:AL = 0: FOR I = 0 TO 18:AL = AL +ER(I): NEXT : VTAB 22: HTAB 8: PRINT "00";: HTAB 39 +(AL <10): PRINT AL;: VTAB 24: NORMAL : GOTO 225
700 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>___________<CTRL-M><CTRL-M>SUBROUTINES<CTRL-M>___________<CTRL-M>
800 POKE KR,0: WAIT KP,128: POKE KR,0:X = PEEK(KP): IF X >95 THEN X = X -32
810 RETURN
900 CALL GM:X$ = "":L = PEEK(48715): FOR I = 513 TO 512 +L:X$ = X$ + CHR$( PEEK(I) -128): NEXT : IF X$ = ER$(Y) THEN HTAB 21: PRINT " . . . . . . .-SAME-";:ER(Y) = 0: RETURN
1990 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>______________________<CTRL-M><CTRL-M>NORMALIZE ALL MESSAGES<CTRL-M>______________________<CTRL-M>
2000 VTAB 24: HTAB 1: PRINT " RESTORE ORIGINAL MESSAGES (Y/N)";: CALL CS: GOSUB 800: IF X = 89 THEN 2005: REM 'Y'
2002 ON X < >78 GOTO 2000: GOSUB 955: GOTO 180
2005 CALL N8: REM $BA9C.BB46
2010 RESTORE : FOR I = 47637 TO 47656: READ J: POKE I,J: NEXT : REM $BA15.BA28
2020 AL = 0: GOSUB 955: VTAB 2: PRINT : GOTO 70
3000 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>___________________<CTRL-M><CTRL-M>UPDATE BASIC.SYSTEM<CTRL-M>___________________<CTRL-M>
3005 VTAB 24: HTAB 1: PRINT " UPDATE DISK IN DRIVE "D"? (Y/D)";: CALL CS: GOSUB 800: IF X = 89 THEN 3050: REM 'Y'
3015 IF X = 68 THEN D = D +1: ON D = 2 GOTO 3005: IF D = 3 THEN D = 1: GOTO 3005
3995 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>___________<CTRL-M><CTRL-M> QUIT CODE <CTRL-M>___________<CTRL-M>
4000 TEXT : HOME : PRINT : PRINT "TYPE "Q$"RUN"Q$" TO RESTART.": END
4995 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>______________________<CTRL-M><CTRL-M>ERROR HANDLING ROUTINE<CTRL-M>______________________<CTRL-M>
5000 ER = PEEK(222):EL = PEEK(219) *256 + PEEK(218)
5040 IF EL = 18 THEN TEXT : HOME : PRINT BP$: PRINT "ERROR.CODE IS MISSING.": END : GOTO 15
5045 IF ER < >6 AND ER < >8 THEN 5100
5050 IF EL = 3050 THEN GOSUB 955: PRINT " CAN'T FIND "S$"; PRESS ANY KEY";: PRINT BP$;: GOSUB 950: GOTO 180
5100 IF ER = 3 THEN GOSUB 955: PRINT " SOMEONE SEEMS TO HAVE STOLEN DRIVE "D".";BP$;: GOSUB 950: GOTO 180
5200 TEXT : POKE 216,0: RESUME
8015 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>_____________________<CTRL-M><CTRL-M>ORIGINAL OFFSET TABLE<CTRL-M>_____________________<CTRL-M>
8020 DATA 84,91,102,111,117,117,126,132,138,145,155,168,180,191,201,209,217,225,236,243
8990 REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>_____________________<CTRL-M><CTRL-M>ORIGINAL MESSAGE DATA<CTRL-M>_____________________<CTRL-M>
9000 DATA "RANGE ERROR","NO DEVICE CONNECTED","WRITE PROTECTED","END OF DATA","PATH NOT FOUND","I/O ERROR","DISK FULL","FILE LOCKED","INVALID PARAMETER"
9001 DATA "NO BUFFERS AVAILABLE","FILE TYPE MISMATCH","PROGRAM TOO LARGE","NOT DIRECT COMMAND","SYNTAX ERROR","DIRECTORY FULL","FILE NOT OPEN","DUPLICATE FILE NAME","FILE BUSY","FILE(S) STILL OPEN"